package com.punch.order.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.punch.common.model.SuperEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 通用订单
 * </p>
 *
 * @author wjj
 * @since 2020-12-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("common_order")
public class CommonOrder extends SuperEntity<CommonOrder> {

    private static final long serialVersionUID = 1L;

    /**
     * 订单编号,SO开头流水号
     */
    @TableField("order_sn")
    private String orderSN;

    /**
     * 下单时间
     */
    @TableField("order_time")
    private LocalDateTime orderTime;

    /**
     * 订单类型 0-未知 1-三点半订单
     */
    @TableField("order_type")
    private Integer orderType;

    /**
     * 订单总金额
     */
    @TableField("total_amount")
    private Integer totalAmount;

    /**
     * 订单金额,用户需支付的金额
     */
    @TableField("order_amount")
    private Integer orderAmount;

    /**
     * 金额：所有产品的金额相加
     */
    @TableField("original_amount")
    private Integer originalAmount;

    /**
     * 使用货币：国际货币编（usd/cny）
     */
    @TableField("currency")
    private String currency;

    /**
     * 订单状态 0-待付款 1-已付款 2-已取消 3-已开班 4-完成
     */
    @TableField("order_status")
    private Integer orderStatus;

    /**
     * 取消状态 0-无取消 1-未付款超时取消 2-未付款用户取消 3-付款用户取消 4-未成班取消
     */
    @TableField("cancel_status")
    private Integer cancelStatus;

    /**
     * 是否支持部分退款 0-无退款 1-部分退款 2-全部退款
     */
    @TableField("part_refund_flag")
    private Integer partRefundFlag;

    /**
     * 退款状态 0-无退款 1-已退款 2-退款中 3-拒绝退款
     */
    @TableField("refund_status")
    private Integer refundStatus;

    /**
     * 支付状态 0-待付款 1-已付款 2-付款中
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 支付类型 0-(0元订单)无支付 1-在线支付
     */
    @TableField("pay_type")
    private Integer payType;

    /**
     * 支付时间
     */
    @TableField("pay_time")
    private LocalDateTime payTime;

    /**
     * 付渠道ALIPAY,WXPAY_APP
     */
    @TableField("pay_channel")
    private String payChannel;

    /**
     * 订单结算状态 0-未结算 1-正在结算 2-结算完成
     */
    @TableField("settlement_status")
    private Integer settlementStatus;

    /**
     * 结算时间
     */
    @TableField("settlement_time")
    private LocalDateTime settlementTime;

    /**
     * 订单用户uid
     */
    @TableField("create_id")
    private Long createId;


    @Override
    protected Serializable pkVal() {
        return null;
    }

}
